package com.java.sort;

import java.util.Random;

/**
 * 冒泡排序
 * @author 19252
 * @date 2020/7/15
 */
public class BubbleSort {

    public static void main(String[] args) {
        BubbleSort bubbleSort = new BubbleSort();
        int[] array = new int[]{0,4,3,6,5};
        bubbleSort.sort(array);
        for (int value : array) {
            System.out.print(value + " ");
        }

        System.out.println();
        // 对冒泡排序算法进行一个数据测试 以一个 80000000 个数据的数组进行
        // 生成数组
        Random random = new Random();
        int[] testArray = new int[80000];
        for (int i = 0; i < 80000; i++) {
            testArray[i] = random.nextInt(80000);
        }
        long millis = System.currentTimeMillis();
        bubbleSort.sort(testArray);
        millis = System.currentTimeMillis() - millis;
        System.out.println("数据排序所需的时间：" + millis + "毫秒");

    }


    public void sort(int[] array){
        int length = array.length;
        int temp;
        for (int i = 0; i < length - 1; i++) {
            // 优化
            boolean flag = true;
            for (int j = 0; j < length - 1 - i; j++) {
                if (array[j] > array[j + 1]){
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    flag = false;
                }
            }
            if (flag){
                return;
            }
        }
    }
}
